[レポート]PowerAutomate C2: クラウド寄生型ステルスC2フレームワーク – CODE BLUE 2023 #codeblue_jp
こんにちは、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。
今回はCODE BLUE 2023で行われた以下のセッションのレポートです。
PowerAutomate C2 は、PowerAutomate の正規機能のみを利用し、クラウド上で完結する攻撃をエミュレートするために設計されたフレームワークである。
IT技術の変化とともに、サイバーセキュリティの戦場はエンドポイントからクラウドへと移行している。この変化により、クラウド上に保持される有用な情報が増加し、これまで以上に攻撃者にとって価値のある標的となった。そして新たに Living Off the Cloud と呼ばれる戦術を生み出され、サイバー攻撃で悪用されるようになってきた。 PowerAutomateは「新しいPowerShell」とも称される強力なクラウドベースの自動化プラットフォームである。PowerAutomate を用いると攻撃者はエンドポイントに依存しない攻撃実行環境を利用でき、「Living Off the Cloud」攻撃が可能となる。PowerAutomateはクラウド上で完結するため、これまで攻撃に使われてきたユーザーの端末を必要とせず、エンドポイントセキュリティやネットワークデバイスの監視対象の外で攻撃を行える。さらにはMicrosoft 365内にも痕跡を残さず攻撃を実現できる。ただし、PowerAutomateを利用するには、攻撃対象のユーザープロファイルでPowerAutomateのプラットフォームへ継続的にアクセスできる必要がある。この課題に対処するため、PowerAutomate C2ではPowerAutomate Managementとして知られるコネクタを利用し、攻撃対象のユーザープロファイルで一度アクセスできれば、攻撃対象のPowerAutomateの実行環境へ永続的にアクセスできようにする。 本発表では、PowerAutomateの基本機能のみを利用したPowerAutomate C2 のコンセプトとデモを紹介する。PowerAutomate C2 は Python で実装されており、GUI ベースのローコード編集画面を使用せずPythonでPowerAutomateのフローの制御を行う。また、PowerAutomateへのアクセス権が失われた後でも、ログを残さずにフローのリモート作成と削除が可能にしている。C2通信は、HTTP(S)やDropboxなどのストレージサービスをサポートし、操作の柔軟性とステルス性を実現した。さらに、本発表ではPowerAutomate Managementを不適切に許可するリスクに対して警鐘を鳴らす。
Presented by : 羽田 大樹 - Hiroki Hada 谷 知亮 - Tomoaki Tani 藤田 倫太朗 - Rintaro Fujita
デモ動画はこちら↓
レポート
- Team V
- Virtual チーム
- 主にレッドチームのような役割
- アジェンダ
- ツールの紹介(イントロ)
- 今回はレッドチーム向けにフローを作成
- ローコード
- ユースケースと対策
- Power Automateとは?
- ローコードで一連の処理フローを実装出来るツール
- フローの中の1つ1つのアクションをコネクターと呼ぶ
- DropBoxやGoogle Driveなどの機能もある
- フローは一から作ることも出来るし、テンプレートもある
- 実行したフローは28日間ログが残る
- それぞれのログをクリックすると詳細が見える
- 非常に便利なPower Automateだが、攻撃者にとっても便利
- Power AutomateはAutomateなShellという声も
- Microsoftの報告によると、APT内に240日間潜伏ケースもある
- Bargury氏が公開している攻撃コンセプト
- Power Automate C2のコンセプト
- M365やその他クラウドサービスを普段から利用しているユーザー
- 攻撃の手順
- 攻撃者が初期フローを作成。バックドアを作成。
- ユーザーがパスワードを変更
- 攻撃者がセッションを奪取
- Power Automate Managementとは
- Create Flow
- 新しいフローを作成
- Delete Flow
- 特定フローを削除
- フローを削除すると28日間残るはずのログごと消えてしまう。この仕様は怖い。
- これらのフローを使えばC2攻撃が再現出来そう
- Initial FlowからCreate Flowで新しいFlowを作成し、その後Delete FlowでInitial Flowを削除する
- これを繰り返し、セッションを貼り続ける
- Create Flow
- Initial Flowの中身
- 2つのスレッドが並行して動いている
- 1つ目はペイロードを取得し、そのペイロードの内容から新しいフローを作成
- 2つ目はコネクションのアップロード
- Payload Flowの中身
- Initial Flowから作成するフロー
- スレッドは3つ。1つ目、2つ目はInitial Flowと同じ
- 3つ目は実際の攻撃。何かしらのコネクターを実装する。
- Power Automate C2のアドバンテージ
- クラウドに寄生型
- ステルス性を持つ
- ターゲットがパスワードを変更しても、C2経由であればセッションを維持したまま攻撃を継続可能
- PAC2(Power Automate C2)
- Pythonのツールとして実装したPower Automate C2のツール
- PythonでPower Automateのフローを書ける
- ローコードが売りのPower Automateだが、それがPythonで書ける!エンジニアは嬉しいのでは
- 継続性を保てる
- レッドチームのためのポータル画面を用意
- レシーバーがPower AutomateとのセッションをC2で貼る
- Pythonのツールとして実装したPower Automate C2のツール
- デモ紹介
- PAC2のデモを紹介(セッション内のものとは若干異なりますが、気になる方は本ブログにも記載のデモ動画をご参照ください。)
- 全てコンソール上でポチポチするだけで設定可能
- 上の説明通り、セッションが継続されていた
- 例えばTeamsのやり取りをC2サーバーに送ってやり取りの可視化などが可能
- 痕跡を消すことが可能
- Low(Layer) Code
- ローコードでバイナリ操作が可能か?
- なぜやりたかったのか?
- 攻撃者は平文でPower Automateにフロー定義を送っている
- これって痕跡を残さないために暗号化出来るんだっけ?
- 元々Power Automateでbit演算は想定されていないが、テーブルを利用することで同等の操作を行った
- swap演算も同様に実装した
- なぜやりたかったのか?
- 最終的にRC4が実装出来た
- ただ、今回のPAC2ではシンプルにXORで難読化を行った
- ローコードでバイナリ操作が可能か?
- まとめ
- 攻撃者にとってPower Automateは非常に魅力的
- PAC2はレッドチームにとって有用なツール
- Power Automate Managementは危険な部分もあるので、一般的な企業では無効化しておくと良さそう
感想
NTTセキュリティホールディングス株式会社の方々のセッションで、立ち見の方も多く、非常に大人気でした。
Power Automate、恥ずかしながら自分は使ったことが無かったのですが、話を聞いていると確かに非常に便利なツールである反面、攻撃者にとって非常に有用なツールであることが理解出来ました。
便利なツールを利用するのであれば、今回説明のあった通りPower Automate Managementのような強い権限を持つ機能について理解を進め、必要に応じて利用を制限するようなことを検討したいですね。